<?php 
/**
 * 用户数据库操作model
 * @author Jinke  mejinke@gmail.com
 * 2010-01-08
 *
 */
class User_Model extends  Model{
	
	public function __construct(){
		
		//设置数据库名称
		$this->_dbName = Dbtool::getDBName('main');
		//初始化父类，设置数据库连接等
		parent::__construct($this);
	}
	
	
	/**
	 * 根据ID获取用户资料
	 * @param int $uid 用户ID
	 * @return mixed 用户资料数据或 false
	 */
	public function getById($uid){
		if (empty($uid)) return false;
		if ($tep = $this->where(array('id'=>$uid))->getOne())
			return $tep;
		return false;
	}

	
	/**
	 * 用户登录
	 * @param string $account 账号
	 * @param string $passwd  密码
	 * @return mixed 用户资料数组 或 false
	 */
	public function login($account,$passwd){
		if (empty($account)||empty($passwd)) return false;
		if ($tep = $this->where(array('account'=>$account))->getOne()){
			if($tep['password']==md5($passwd))
				return $tep;
		}
		return false;
	}
	
	
	/**
	 * 账号是否存在
	 * @param string $account 账号
	 * @return mixed 存在则返回账号资料  否则返回 false
	 */
	public function accountIsExists($account){
		if (empty($account)) return true;
		if ($tep = $this->where(array('account'=>$account))->getOne()){
			return $tep;
		}
		return false;
	}
	
	/**
	 * 新建账号
	 * @param array $data 资料数组
	 * @return mixed 账号存在返回 'accountExists' 成功返回id 失败返回 false
	 */
	public function create(Array $data){
		if (empty($data)) return false;
		//检测账号是否存在
		if($this->accountIsExists($data['account']))
			return'accountExists';
		$data['password'] = md5($data['password']);
		$data['addtime'] = time();
		return $this->insert($data);
	}
	
	/**
	 * 更新用户资料
	 * @param array $data 用户资料数组
	 * @param int $uid 用户ID
	 * @return
	 */
	public function edit(Array $data,$uid){
		if (empty($data)||empty($uid)) return false;
		if(isset($data['account']))
			unset($data['account']);
		if (isset($data['password'])&&!empty($data['password']))
			$data['password'] = md5($data['password']);
		else 
			unset($data['password']);
		//严格禁止外界修改敏感资料
		unset($data['devote']);
		unset($data['spcount']);
		unset($data['isadmin']);
		unset($data['comcount']);
		
		return $this->where(array('id'=>$uid))->update($data);
	}
	
	/**
	 * 增加用户的贡献值 
	 * @param int $uid 用户ID
	 * @param int $num 数量
	 */
	public function addDevote($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoAdd('devote',$num);
	}
	/**
	 * 减少用户的贡献值 
	 * @param int $uid 用户ID
	 * @param int $num 数量
	 */
	public function lessenDevote($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoLessen('devote',$num);
	}
	

	/**
	 * 增加用户的分享数 
	 * @param int $uid 用户ID
	 * @param int $num 数量
	 */
	public function addComCount($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoAdd('comcount',$num);
	}
	/**
	 * 减少用户的分享数  
	 * @param int $uid 用户ID
	 * @param int $num 数量
	 */
	public function lessenComCount($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoLessen('comcount',$num);
	}
	
	/**
	 * 增加用户的已知领域数 
	 * @param int $uid 用户ID
	 */
	public function addSpCount($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoAdd('spcount',$num);
	}
	/**
	 * 减少用户的已知领域数 
	 * @param int $uid 用户ID
	 * @param int $num 数量
	 */
	public function lessenSpCount($uid,$num=1){
		return $this->where(array('id'=>$uid))->autoLessen('spcount',$num);
	}
}
?>